package edu.scut.course_management.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import edu.scut.course_management.dto.CourseListInfo;
import edu.scut.course_management.dto.GetCourseListOfS;
import edu.scut.course_management.dto.GetCourseListOfT;
import edu.scut.course_management.dto.SearchCourseListOfM;
import edu.scut.course_management.po.Teaches;

/**
 * 数据访问，对应库表：teaches
 * @author thompson
 */
@Repository
public interface TeachesMapper {
    //将教师授课列表添加到teaches中
    public void addTeaches(List<Teaches> teaches);
    //通过title、courseTypeId、year、term查找符合条件的teaches（teaches和course联表查询）
    public List<Teaches> findTeachesToGetList(SearchCourseListOfM searchCourseListOfM);
    //多表查询，通过teaches信息查找课程列表（管理员）的信息
    public List<CourseListInfo> findCourseInfoByTeachesList(@Param("teachesList") List<Teaches> teachesList);
    //根据教师id返回teaches和course自然连接后的记录列表
    public List<GetCourseListOfT> findCourseInfoByTeacherId(@Param("teacherId") String teacherId); 
    //根据学生id返回takes、teaches、course、teacher在部分字段上连接的记录列表
    public List<GetCourseListOfS> findCourseInfoByStudentId(@Param("studentId") String studentId);
    //返回所有的identifier，用户新增/修改课程信息的identifier的唯一性检验
    public List<String> findAllIdentifier();
}